// request.ts

import axios from   'axios'
import { ElNotification } from 'element-plus'
import { userInfoStore } from '@/stores/userInfo'



const instance = axios.create({
  baseURL: import.meta.env.VITE_APP_URL,
  timeout: 10000,
})

console.log(import.meta.env.VITE_APP_URL)

instance.interceptors.request.use(
  (config) => {
    // 在发送请求之前做些什么
    let token = userInfoStore().token
if(token){
  config.headers.Authorization = token
}

    return config
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

instance.interceptors.response.use(
  (response) => {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response.data
  },
  (error) => {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    let msg ;
    if(error.status===401){
        msg = '登录过期，请重新登录'
          //弹出这个登录框
      userInfoStore().outLogin()
    }

    ElNotification({
      type: 'error',
      message: msg
    })

    console.log('响应错误',error);
    return Promise.reject(error)
  }
)
// get、 post

const http = {
  get<T>(url:string, params?:any, config?:any):Promise<T> {
    // config: loading
    return new Promise((resolve, reject) => {
      instance.get<T>(url, { params, ...config }).then(res => {
        resolve(res)
      }).catch(err => {
        reject(err)
      })
    })
  },
  post<T>(url:string, data?:any, config?:any) :Promise<T> {
    return new Promise((resolve, reject) => {
      instance.post<T,any>(url, data, config).then(res => {
        resolve(res)
      }).catch(err => {
        reject(err)
      })
    })
  }
}

export default http;
